package com.springboot.mybatis.service.rabbitmq;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.MessageProperties;
import org.junit.Test;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

/**
 * @author sunyt31481
 * @date 2020/8/11 11:44
 * @description
 */
public class ProducerDemoTest {

    @Test
    public void testSendMessage() throws IOException, TimeoutException{
       /* //创建连接mq的连接对象
        ConnectionFactory connectionFactory = new ConnectionFactory();
        //设置连接rabbitmq主机
        connectionFactory.setHost("localhost");
        //设置端口号
        connectionFactory.setPort(5672);
        //设置连接虚拟主机
        connectionFactory.setVirtualHost("/ems");
        //设置访问虚拟主机的用户名和密码
        connectionFactory.setUsername("ems");
        connectionFactory.setPassword("1");

        //获取连接对象
        Connection connection = connectionFactory.newConnection();*/

        //使用工具类进行获取连接对象
        Connection connection = RabbitMqUtil.getConnect();

        //获取连接通道
        Channel channel = connection.createChannel();

        //通道绑定对应消息队列
        //参数1：队列名称 如果队列不存在自动创建
        //参数2：用来定义队列特性是否要持久化 true 持久化队列   false 不持久化 若为true持久化，则发布消息也要加一个参数MessageProperties.PERSISTENT_TEXT_PLAIN，保持消息数据的持久化
        //参数3：exclusive 是否独占队列  true 独占队列  false 不独占
        //参数4：autoDelete: 是否在消费完成后自动删除队列  true 自动删除  false 不自动删除
        //参数5：额外附加参数
        channel.queueDeclare("helloQueue",false,false,false,null);

        //发布消息
        //参数1：交换机名称
        //参数2：队列名称
        //参数3：传递消息额外设置 MessageProperties.PERSISTENT_TEXT_PLAIN，保持消息数据的持久化
        //参数4：消息的具体内容
        channel.basicPublish("","helloQueue", MessageProperties.PERSISTENT_TEXT_PLAIN,"hello rabbitmq".getBytes());

        /*channel.close();
        connection.close();*/
        RabbitMqUtil.closeConnect(channel, connection);


    }
}
